System Area Networks (SANs) provide significant benefits as compared to other network configurations. Typical SANs are highly localized having a server computer system and at least one client computer system that communicates with the server computer system. A primary element that differentiates a SAN from other network configurations such as a Local Area Network or a Wide Area Network is that the communication protocol is designed particularly for the SAN. Indeed, typical SAN protocols take advantage of the relatively small size of the SAN and/or the security involved with such a system, to therefore implement the communication protocol in hardware to capitalize on the speed of the system.
By recognizing that each of the clients is trusted and by the fact that communication distances are small and usually comprise high speed, low error communication lines, a typical SAN protocol can be simplified such that the overall performance of the system is relatively improved over other network systems. One particular protocol that has been developed is known as Infiniband, which allows applications running on a computer connected to the SAN to send messages on the fabric by directly accessing the hardware without going through the operating system layer. The hardware is called an HCA or host channel adapter. By doing so, an executing application can avoid operating system calls when accessing the HCA directly, which consequently improves performance of the system.
Prior to directly accessing the HCA, however, the application must register a buffer of memory. This registration involves translating a virtual memory address to a physical memory address and putting the information into the HCA. Without the registration process, the HCA does not know where in physical memory the corresponding data resides. Following the registration process, the application issues an I/O request on the buffer, the request is performed and then the buffer is de-registered. Since the layer that accesses the hardware does not own the buffers, i.e., the application owns the buffers, the hardware has to deregister the buffer immediately. This means for every I/O operation, we have to perform the registration/de-registration process steps which significantly impacts and impairs performance.
It is with respect to these considerations and others that the present invention has been made.